package main

import "fmt"

//数组初始化
func main() {
	//1. 普通初始化
	var a [5]int = [5]int{1, 2, 3, 4, 5}
	fmt.Printf("a=%v\n", a)
	//2. 自动推导
	b := [5]int{1, 2, 3, 4, 5}
	fmt.Printf("b=%v\n", b)
	//3. 部分初始化，没有初始化的元素，自动赋值
	c := [5]int{1, 2, 3}
	fmt.Printf("c=%v\n", c)
	//4. 指定某个元素初始化
	d := [5]int{2: 4, 4: 20}
	fmt.Printf("d=%v\n", d)

	//数组比较，支持比较 != ==, 比较是不是每个元素都一样，数组类型要一样
	fmt.Printf("[]a=[]b is %v\n", a == b)
	//同类型数组可以赋值
	c = a
	//对数组内元素的修改一般用指针，否则就是拷贝，外面的数组不会变化
	//数组需要指明个数
	update(&c)
	fmt.Printf("c=%v\n", c)
}

func update(a *[5]int) {
	(*a)[0] = 888
}
